import akshare as ak
import pandas as pd

from easymoney.framework.mysql.core.db_factory import InvestmentRecommendationEntity

"""
筛选 20 块以下的股票
"""
stock_codes = InvestmentRecommendationEntity.select()  # 股票代码列表

# 创建一个空列表来存储符合条件的股票代码和价格
cheap_stocks = []

# 遍历股票代码列表
for item in stock_codes:
    # 使用Akshare查询股票的最新价格（这里以股票历史行情接口为例，但你可能需要调整以获取实时价格）
    # 注意：这个接口可能返回的是历史数据，而不是实时数据。如果需要实时数据，请查阅Akshare的文档以找到正确的接口。
    stock_zoom_df = ak.stock_zh_a_hist(symbol=item.stock_code, period="daily", adjust="qfq")

    # 由于返回的是历史数据，我们需要获取最新的一行数据（即最近一个交易日的数据）
    if not stock_zoom_df.empty:
        latest_row = stock_zoom_df.iloc[-1]
        price = latest_row['收盘']

        # 检查价格是否在20以下
        if price < 20:
            cheap_stocks.append({'代码': item.stock_code, '价格': price})

# 输出符合条件的股票代码和价格
print("价格在20以下的股票：")
for stock in cheap_stocks:
    print(f"股票代码：{stock['代码']}, 价格：{stock['价格']}")

# 如果你想要将结果保存为DataFrame，可以这样做：
cheap_stocks_df = pd.DataFrame(cheap_stocks)
print(cheap_stocks_df)
